<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>组件</title>
    <script src="./js/react.development.js"></script>
    <script src="./js/react-dom.development.js"></script>
    <script src="./js/babel.min.js"></script>
    <style>
      .header {
        height: 100px;
        background: #aef;
      }
      .main {
        height: 400px;
        background: rgb(162, 140, 184);
      }
      .footer {
        height: 100px;
        background: rgb(212, 161, 126);
      }
    </style>
  </head>
  <body>
    <div id="root"></div>
    <script type="text/babel">
      //创建虚拟 DOM 对象
      //如果标签名首字母是 小写, 则会解析渲染为 HTML 的标签
      //如果标签名首字母是 大写, 则会解析为一个组件. 内部会寻找对应名称的函数或者类
      // let vdom = <div>
      //     <SPAN>哈喽</SPAN>
      //   </div>;

      // //渲染
      // ReactDOM.render(vdom, document.querySelector('#root'))

      // React 两种类型组件  函数式组件和类式组件
      //组件函数首字母一定要大写
      function Header(){
        // 返回虚拟 DOM 对象
        return <div className="header"></div>;
      }

      //封装 Main 函数
      let Main = () => {
        return <div className="main"></div>;
      }

      //封装 Footer 函数
      let Footer = function(){
        return <div className="footer"></div>;
      }

      //创建一个虚拟 DOM 对象
      //<Header></Header> 是一个组件标签, 渲染时会根据组件标签, 寻找同名的函数, 调用函数获得虚拟 DOM 对象再进行渲染
      //声明一个函数 App  =>  Application 应用
      function App(){
        return <div>
          <Header></Header>
          <Main />
          <Footer />
        </div>;
      }

      //渲染
      ReactDOM.render(<App />, document.querySelector('#root'));
    </script>
  </body>
</html>
